home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIP Haziran 2001.iso / prog / haziran / 19 / setup.exe / data.z / pci_lib.h < prev    next >
C/C++ Source or Header  |  2001-04-11  |  3KB  |  113 lines

  1.     //////////////////////////////////////////////////////////////////////
  2. // File - pci_lib.h
  3. //
  4. // Library for accessing a PCI card.
  5. // Code was generated by WinDriver Wizard.
  6. // It accesses hardware via WinDriver functions.
  7. // 
  8. //////////////////////////////////////////////////////////////////////
  9.  
  10. #ifndef _PCI_LIB_H_
  11. #define _PCI_LIB_H_
  12.  
  13. #include "../../include/windrvr.h"
  14. #include "../shared/pci_regs.h"
  15. #include "../shared/bits.h"
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20.  
  21. // put the your PCI card's Vendor ID and Device ID here
  22. enum { PCI_DEFAULT_VENDOR_ID = 0x0 };
  23. enum { PCI_DEFAULT_DEVICE_ID = 0x0 };
  24.  
  25. typedef enum
  26. {
  27.     PCI_MODE_BYTE   = 0,
  28.     PCI_MODE_WORD   = 1,
  29.     PCI_MODE_DWORD  = 2
  30. } PCI_MODE;
  31.  
  32. typedef enum
  33. {
  34.     PCI_AD_BAR0 = 0,
  35.     PCI_AD_BAR1 = 1,
  36.     PCI_AD_BAR2 = 2,
  37.     PCI_AD_BAR3 = 3,
  38.     PCI_AD_BAR4 = 4,
  39.     PCI_AD_BAR5 = 5,
  40.     PCI_AD_EPROM = 6,
  41.     PCI_ITEMS = 7
  42. } PCI_ADDR;
  43.  
  44. typedef struct PCI_STRUCT *PCI_HANDLE;
  45.  
  46. typedef struct
  47. {
  48.     DWORD dwCounter;   // number of interrupts received
  49.     DWORD dwLost;      // number of interrupts not yet dealt with
  50.     BOOL fStopped;     // was interrupt disabled during wait
  51. } PCI_INT_RESULT;
  52. typedef void (WINAPI *PCI_INT_HANDLER)( PCI_HANDLE hPCI, PCI_INT_RESULT *intResult);
  53.  
  54. typedef struct
  55. {
  56.     WD_INTERRUPT Int;
  57.     HANDLE hThread;
  58.     WD_TRANSFER Trans[1];
  59.     PCI_INT_HANDLER funcIntHandler;
  60. } PCI_INT_INTERRUPT;
  61.  
  62. typedef struct
  63. {
  64.     DWORD index;
  65.     DWORD dwMask;
  66.     BOOL  fIsMemory;
  67.     BOOL  fActive;
  68. } PCI_ADDR_DESC;
  69.  
  70. typedef struct PCI_STRUCT
  71. {
  72.     HANDLE hWD;
  73.     BOOL   fUseInt;
  74.     PCI_INT_INTERRUPT Int;
  75.     WD_PCI_SLOT pciSlot;
  76.     PCI_ADDR_DESC addrDesc[PCI_ITEMS];
  77.     WD_CARD_REGISTER cardReg;
  78. } PCI_STRUCT;
  79.  
  80. // options for PCI_Open
  81. enum { PCI_OPEN_USE_INT =   0x1 };
  82.  
  83. BOOL PCI_Open (PCI_HANDLE *phPCI, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum, DWORD options);
  84. void PCI_Close(PCI_HANDLE hPCI);
  85. DWORD PCI_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
  86. BOOL PCI_IsAddrSpaceActive(PCI_HANDLE hPCI, PCI_ADDR addrSpace);
  87.  
  88. // General read/write function
  89. void PCI_ReadWriteBlock(PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset, BOOL fRead, PVOID buf, DWORD dwBytes, PCI_MODE mode);
  90. BYTE PCI_ReadByte (PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset);
  91. WORD PCI_ReadWord (PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset);
  92. DWORD PCI_ReadDword (PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset);
  93. void PCI_WriteByte (PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset, BYTE data);
  94. void PCI_WriteWord (PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset, WORD data);
  95. void PCI_WriteDword (PCI_HANDLE hPCI, PCI_ADDR addrSpace, DWORD dwOffset, DWORD data);
  96. // handle interrupts
  97. BOOL PCI_IntIsEnabled (PCI_HANDLE hPCI);
  98. BOOL PCI_IntEnable (PCI_HANDLE hPCI, PCI_INT_HANDLER funcIntHandler);
  99. void PCI_IntDisable (PCI_HANDLE hPCI);
  100. // access to PCI configuration registers
  101. void PCI_WritePCIReg(PCI_HANDLE hPCI, DWORD dwReg, DWORD dwData);
  102. DWORD PCI_ReadPCIReg(PCI_HANDLE hPCI, DWORD dwReg);
  103.  
  104. // this string is set to an error message, if one occurs
  105. extern CHAR PCI_ErrorString[];
  106.  
  107.  
  108. #ifdef __cplusplus
  109. }
  110. #endif
  111.  
  112. #endif
  113.